Migrating or moving live data in a distributed environment presents complexities in avoiding race conditions while copying data, wherein newer data from one application may be overwritten with older data from another application. For example, if appropriate protections are not in place, older, out of date records may overwrite newly modified records in a database table, which may cause the new records to be permanently lost.
Some single-system solutions protect against race conditions by using a simple locking approach. However, creating a usable, consistent copy of data while the data is being updated simultaneously from multiple host computers is more complex, particularly when the migration solution is host-based wherein a software utility runs on the compute nodes of the distributed cluster rather than on storage devices or a storage fabric involved in the migration. In such an environment, a race condition can exist when updating data simultaneously from several nodes which could result in lost data on the target storage device.
Existing solutions may include using some sort of communication mechanism between machines to ensure that data can be copied atomically from source to target in a sort of distributed locking, so that race conditions between nodes updating the same data are avoided. However, solutions that rely on inter-node communication are inherently complicated and also dependent on a reliable, fast communication mechanism between nodes to accomplish the task with minimal performance impacts. As a result, such solutions can be sensitive to the performance and reliability of the associated communication mechanisms which are commonly network or disk storage based.